package com.yuntai.pms.model.api;

import com.yuntai.pms.model.dto.hospital.HosHospitalDto;
import com.yuntai.pms.model.dto.system.RoleQueryDto;
import com.yuntai.pms.model.entity.system.Role;
import com.yuntai.pms.model.result.PageResult;

import java.util.List;
import java.util.Map;

/**
 * @ClassName: RoleService
 * @Description: 提供对角色CRUD操作的服务的接口
 * @author caijg@hsyuntai.com
 * @date 2017年8月28日 上午11:11:36
 */
public interface RoleService {
	
	/**
	 * @Title: getAllRoleInfo
	 * @Description: 获得所有角色的name，description属性
	 * @return
	 */
	Map<String,String> getAllRoleInfo();
	
	/**
	 * @Title: getRolesByDto
	 * @Description: 根据Dto数据获得角色列表
	 * @return
	 */
	PageResult<Role> getRolesByDto(RoleQueryDto pageDto);
	
	/**
     * @Title: insertRole
     * @Description: 新增角色
     * @param role
     */
	void insertRole(Role role);
	
	/**
     * @Title: updateRoleByPrimaryKey
     * @Description: 更新角色信息
     * @param role
     */
	void updateRoleByPrimaryKey(Role role);
	
	/**
     * @Title: deleteRolesByPrimaryKey
     * @Description: 通过主键Id数组批量删除角色
     * @param ids
     * @return 删除的数量
     */
	int deleteRolesByPrimaryKey(Long[] ids);

	/**
	 * @Title: getRoleIdsByUserId
	 * @Description: 通过userId查询用户拥有的角色id
	 * @param userId
	 * @return
	 */
	PageResult<Long> getRoleIdsByUserId(Long userId);
	
	/**
	 * @Title: getRoleCodeByUserId
	 * @Description: 通过userId查询用户拥有的角色code
	 * @param id
	 * @return
	 */
	List<String> getRoleCodeByUserId(Long id);

    Boolean isRoleCodeAvailable(String id, String name);


    /**
    * @Description:
    * @author maoze@hsyuntai.com
    * @date 2019/1/11 13:18
    * @params No such property: code for class: Script1
    * @return
    * Modified By:
    */
	List<HosHospitalDto> getHfpHosWithRole(Long RoleId);


	/**
	 * @Author maoze@hsyutai.com
	 * @Description  删除角色和医院的关系
	 * @Date 14:33 2019/1/11
	 * @Param [RoleId]
	 * @return void
	 **/
	void delHfpHosRefRole(Long RoleId);

	/**
	 * @Author maoze@hsyutai.com
	 * @Description   批量添加角色和医院的关系
	 * @Date 14:33 2019/1/11
	 * @Param [dto]
	 * @return void
	 **/
	void insertHfpHosRefRole(Role dto);
}
